﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MockupDesigner.AppItems.Commands
{

    public enum CommandType
    {
        Undoable,   // the command can be undone / redone
        Irreversible, // the history have to be cleared
        NonDisturbing    // do not store the command
    }

    public interface ICommand
    {
        CommandType CommandType { get; }

        /// <summary>
        /// Execute the ICommand
        /// </summary>
        /// <param name="target">the target of the Command</param>
        /// <param name="parameters">the parameters of the Command</param>
        void Execute(object target, params object[] parameters);

        void Undo();

        void Redo();

    }
}
